<?php

defined('EN_CODE') or die(__FILE__.': Direct Access Denied');

use Code\Model;


function formas_pago() {
    $model = Model::getInstance();
    $query = "SELECT * FROM formas_pago";
    $result = $model->query($query);
    if (!$result || $model->numRows($result)==0) {
        return null;
    }
    return $model->fetchAll($result);
}

function listado_total_ventas() {
    $model = Model::getInstance();
    $query = "SELECT * FROM ventas";
    $result = $model->query($query);
    if (!$result || $model->numRows($result)==0) {
        return null;
    }
    return $model->fetchAll($result);
}

function una_venta($numero_venta) {
    $model = Model::getInstance();
    $numero_venta_escaped = preg_replace('/[^\d]/', '', $numero_venta);
    $query = "SELECT v.*, CONCAT_WS(' ', c.nombre, c.apellido) AS cliente, c.dni AS dni_cliente, fp.nombre AS pago
              FROM ventas v
                INNER JOIN clientes c USING(numero_cliente)
                INNER JOIN formas_pago fp USING(forma_pago)
              WHERE numero_venta=$numero_venta_escaped";
    $result = $model->query($query);
    return $model->fetchOne($result);
}

function una_venta_con(array $parameters) {
    $model = Model::getInstance();
    $i = 0;
    $conditions = "";
    foreach ($parameters as $field => $value) {
        if ($i!=0) {
            $conditions .= " OR ";
        } else {
            $i++;
        }
        $conditions .= " $field='$value' ";
    }
    $query = "SELECT * FROM ventas WHERE ($conditions)";
    $result = $model->query($query);
    return $model->fetchOne($result);
}

function crear_venta(array $datos, array $productos) {
    $model = Model::getInstance();
    $datos['estado'] = '1';
    $campos = "INSERT INTO ventas (";
    $valores = " VALUES(";
    $cantidad_campos = count($datos);
    $cantidad_campos_procesados = 0;
    foreach ($datos as $campo => $valor) {
        $campos .= $campo;
        if (++$cantidad_campos_procesados!=$cantidad_campos) {
            $campos .= ', ';
        } else {
            $campos .= ')';
        }
        $valores .= "'$valor'";
        if ($cantidad_campos_procesados!=$cantidad_campos) {
            $valores .= ', ';
        } else {
            $valores .= ')';
        }
    }
    $query = $campos.$valores;
    $numero_venta = $model->query($query);
    if (!$numero_venta) {
        return false;
    }
    $valores = array();
    foreach ($productos as $id_producto => $cantidad) {
        $valores[] = "($numero_venta, $id_producto, $cantidad)";
    }
    $valores = implode(',', $valores);
    $query = "INSERT INTO venta_producto (numero_venta, id_producto, cantidad) VALUES $valores";
    $result = $model->query($query);
    return $numero_venta;
}

function cancelar_venta($numero_venta) {
    $model = Model::getInstance();
    $query = "UPDATE ventas SET estado=0 WHERE numero_venta=$numero_venta";
    $result = $model->query($query);
    return $result;
}

?>
